package spring.cloud.tasks.executor.service;

import spring.cloud.tasks.executor.service.impl.PauseOrResumeScheduleTask;

import java.util.Date;
import java.util.concurrent.ScheduledFuture;


public interface PauseOrResumeScheduleTaskService {

    /**
     * 初始化守护线程任务
     * 将PauseOrResumeScheduleTask.key 维护到集合内
     */
    void init(PauseOrResumeScheduleTask pauseOrResumeScheduleTask, Date nextTime);

    /**
     * 如果当前key存在集合内则
     * 按照时间 指定下次任务什么时候开始
     */
    ScheduledFuture schedule(PauseOrResumeScheduleTask pauseOrResumeScheduleTask, Date nextTime);

    /**
     * 从集合内移除 如果存在ScheduledFuture 则取消这个ScheduledFuture
     */
    void cancel(PauseOrResumeScheduleTask pauseOrResumeScheduleTask);
}
